import { createStore, combineReducers, applyMiddleware } from 'redux'
import { countReducer } from './reducerA'
import { colorReducer } from './reducerB'
import thunk from 'redux-thunk'
/* 
  redux-thunk 是一个为了解决 redux中的异步操作创造的一个中间件

  redux是可以使用中间件的

  一旦使用了redux-thunk 我们的dispatch就可以接收一个函数作为参数了
  而且是把 dispatch的操作权限交给了 这个回调函数了
  不必非得是 一个action对象了

  redux中间件 是 三阶函数
*/
let qqq = store => next => action => {
  console.log("这是我自己的qqq中间件")
  return next(action)
}
let www = function (store) {
  return function (next) {
    return function (action) {
      console.log("这是我自己的www中间件")
      return next(action)
    }
  }
}

let rootReducer = combineReducers({
  A: countReducer,
  B: colorReducer
})


let store = createStore(rootReducer, applyMiddleware(www, thunk, qqq))
// console.log(store.getState())

export default store